Computing environments, such as data centers, frequently employ cloud computing platforms, where “cloud” refers to a collective computing infrastructure that implements a cloud computing paradigm. For example, as per the National Institute of Standards and Technology (NIST Special Publication No. 800-145), cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. Cloud-based data centers are deployed and managed by cloud service providers, who provide a computing environment for customers (tenants) to run their application programs (e.g. business applications or otherwise). Such cloud computing platforms may be implemented at least in part utilizing one or more virtual compute elements such as one or more virtual machines (VMs) or one or more containers. By way of example, one commonly used type of container is a Docker container.
Containers benefit application packaging and delivery and also have smaller runtime footprints compared to VMs. Thus, an increasing amount of applications adopt containers as their hosting environment. A running container is launched from a container image. A container image is made up one or more image layers. The devices hosting the applications (host devices or machine nodes) obtain container image layers by pulling them from an image registry. In a large-scale data center deployment, the number of image layers being pulled and processed can be quite large. A large number of image layers bring significant performance and storage penalties, especially in the large-scale data center deployment where duplicate image layers can be stored in each machine node.